﻿using NPOI.XWPF.UserModel;
using sdk_cop;
using System;
using System.Runtime.Serialization;
namespace JindaTech.Api.Controllers.Icbc
{
    public class IcbcRequest : AbstractIcbcRequest<IcbcResponse>
    { /// <summary>
      /// 获取响应类
      /// </summary>
      /// <returns>页面类型的服务返回null</returns>
        public override Type getResponseClass()
        {
            return null;
        }
        /// <summary>
        /// PersonalSignVersifyRequestV1类的构造函数
        /// 设置请求URL
        /// </summary>
        public IcbcRequest()
        {
            this.getExtraParams().Add("interfaceName", "ICBC_PEEBANK_CERTVERIFY_NEW");
            //this.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1");
        }
        /// <summary>
        /// 是否支持加密（目前sdk只支持对字段进行AES加解密）
        /// </summary>
        /// <returns>一般返回false</returns>
        public override Boolean isNeedEncrypt()
        {
            return false;
        }
        /// <summary>
        /// http发起请求方式（支持GET、POST两种方式）
        /// </summary>
        /// <returns>一般返回POST</returns>
        public override String getMethod()
        {
            return "POST";
        }
        /// <summary>
        /// 获取业务类类型
        /// </summary>
        /// <returns>返回request类内部定义的BizContent类的类型</returns>
	    public override Type getBizContentClass()
        {
            return Type.GetType("JindaTech.Api.Controllers.Icbc" + ".IcbcRequest+IcbcRequestBiz", true, true);
        }
        /// <summary>
        /// 获取通知地址
        /// </summary>
        /// <returns>通知地址</returns>
        public String getNotifyUrl()
        {
            return getExtraParams()["notify_url"];
        }
        /// <summary>
        /// 设置通知地址参数（通知地址是API网关通过该地址通知商户一些api接口变化、交易状态等信息）
        /// </summary>
        /// <param name="notifyUrl">通知地址</param>
        public void setNotifyUrl(String notifyUrl)
        {
            getExtraParams().Add("notify_url", notifyUrl);
        }

        /// <summary>
        /// 内部业务类，封装需要发送给服务端的业务字段
        /// </summary>
        [DataContract]
        public class IcbcRequestBiz : BizContent
        {
            /// <summary>
            /// 商户编号
            /// </summary>
            [DataMember]
            private string mer_id;
            public string getMerId()
            {
                return mer_id;
            }
            public void setMerId(string value)
            {
                mer_id = value;
            }

            /// <summary>
            /// 商户订单号，只能是数字、大小写字母，且在同一个商户号下唯一
            /// </summary>
            [DataMember]
            private string out_trade_no;
            public string getOutTradeNo()
            {
                return out_trade_no;
            }
            public void setOutTradeNo(string value)
            {
                out_trade_no = value;
            }

            /// <summary>
            /// 收单产品协议编号
            /// </summary>
            [DataMember]
            private string mer_prtcl_no;
            public string getMerPrtclNo()
            {
                return mer_prtcl_no;
            }
            public void setMerPrtclNo(string value)
            {
                mer_prtcl_no = value;
            }

            /// <summary>
            /// 订单金额，单位为分
            /// </summary>
            [DataMember]
            private string order_amt;
            public string getOrderAmt()
            {
                return order_amt;
            }
            public void setOrderAmt(string value)
            {
                order_amt = value;
            }

            /// <summary>
            /// 异步通知商户URL，端口必须为443或80
            /// </summary>
            [DataMember]
            private string notify_url;
            public string getNotifyUrl()
            {
                return notify_url;
            }
            public void setNotifyUrl(string value)
            {
                notify_url = value;
            }

            /// <summary>
            /// 工行API平台的APPID
            /// </summary>
            [DataMember]
            private string icbc_appid;
            public string getIcbcAppId()
            {
                return icbc_appid;
            }
            public void setIcbcAppId(string value)
            {
                icbc_appid = value;
            }

            /// <summary>
            /// 第三方用户标识，微信支付上送用户在商户APPID（指商户在微信开放平台的APPID）下的唯一标识；
            /// 支付宝支付上送用户的唯一标识。若该字段不上送，取用户在工行APPID（指工行在微信开放平台的APPID）下的唯一标识
            /// </summary>
            [DataMember]
            private string openId;
            public string getOpenId()
            {
                return openId;
            }
            public void setOpenId(string value)
            {
                openId = value;
            }

            /// <summary>
            /// 门店名称，用于显示在买单页上。该长度限制是按GBK编码的字节长度，如”测试”，则所占长度为4。
            /// </summary>
            [DataMember]
            private string saledepname;
            public string getSaledepname()
            {
                return saledepname;
            }
            public void setSaledepname(string value)
            {
                saledepname = value;
            }

            /// <summary>
            /// 微信商品描述，传入微信公众号名称-实际商品名称。微信支付时必输，非微信支付的送空字符串
            /// </summary>
            [DataMember]
            private string body;
            public string getBody()
            {
                return body;
            }
            public void setBody(string value)
            {
                body = value;
            }

            ///// <summary>
            ///// 支付宝的订单标题，支付宝支付时必输，非支付宝支付的送空字符串
            ///// </summary>
            //[DataMember]
            //private string subject;
            //public string getSubject()
            //{
            //    return subject;
            //}
            //public void setSubject(string value)
            //{
            //    subject = value;
            //}

            /// <summary>
            /// 通知类型，表示在交易处理完成后把交易结果通知商户的处理模式。
            /// 取值“HS”：在交易完成后将通知信息，主动发送给商户，发送地址为notify_url指定地址； 
            /// 取值“AG”：在交易完成后不通知商户。不送或送空，默认为”HS”
            /// </summary>
            [DataMember]
            private string notify_type;
            public string getNotifyType()
            {
                return notify_type;
            }
            public void setNotifyType(string value)
            {
                notify_type = value;
            }

            /// <summary>
            /// 结果发送类型，通知方式为HS时有效。
            /// 取值“0”：无论支付成功或者失败，银行都向商户发送交易通知信息；
            /// 取值“1”，银行只向商户发送交易成功的通知信息。
            /// 不送或送空，默认为”0”
            /// </summary>
            [DataMember]
            private string result_type;
            public string getResultType()
            {
                return result_type;
            }
            public void setResultType(string value)
            {
                result_type = value;
            }

            ///// <summary>
            ///// 商户账号，商户入账账号，只能交易时指定。
            ///// （商户付给银行手续费的账户，可以在开户的时候指定，也可以用交易指定方式；
            ///// 用交易指定方式则使用此商户账号）。
            ///// 该字段暂不支持上送
            ///// </summary>
            //[DataMember]
            //private string mer_acct;
            //public string getMerAcct()
            //{
            //    return mer_acct;
            //}
            //public void setMerAcct(string value)
            //{
            //    mer_acct = value;
            //}

            /// <summary>
            ///订单失效时间，单位为秒，建议大于60秒
            /// </summary>
            [DataMember]
            private string expireTime;
            public string getExpireTime()
            {
                return expireTime;
            }
            public void setExpireTime(string value)
            {
                expireTime = value;
            }

            ///// <summary>
            /////附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
            ///// </summary>
            //[DataMember]
            //private string attach;
            //public string getAttach()
            //{
            //    return attach;
            //}
            //public void setAttach(string value)
            //{
            //    attach = value;
            //}

            ///// <summary>
            /////支付成功回显页面，支付成功后，跳转至该页面显示。默认跳转到工行的广告页
            ///// </summary>
            //[DataMember]
            //private string return_url;
            //public string getReturnUrl()
            //{
            //    return return_url;
            //}
            //public void setReturnUrl(string value)
            //{
            //    return_url = value;
            //}

            ///// <summary>
            /////支付方式限定，上送”no_credit“表示不支持信用卡支付；
            /////上送“no_balance”表示仅支持银行卡支付；不上送或上送空表示无限制。
            /////暂只支持微信公众号
            ///// </summary>
            //[DataMember]
            //private string pay_limit;
            //public string getPayLimit()
            //{
            //    return pay_limit;
            //}
            //public void setPayLimit(string value)
            //{
            //    pay_limit = value;
            //}

            /// <summary>
            ///商户在微信开放平台的APPID，微信支付且openId有值时必送
            /// </summary>
            [DataMember]
            private string shop_appid;
            public string getShopAppId()
            {
                return shop_appid;
            }
            public void setShopAppId(string value)
            {
                shop_appid = value;
            }

            ///// <summary>
            /////订单附加信息
            ///// </summary>
            //[DataMember]
            //private string order_apd_inf;
            //public string getOrderApdInf()
            //{
            //    return order_apd_inf;
            //}
            //public void setOrderApdInf(string value)
            //{
            //    order_apd_inf = value;
            //}

            ///// <summary>
            /////商品详细描述，对于使用单品优惠的商户，该字段必须按照规范上传。
            /////微信与支付宝的规范不同，请根据支付方式对应相应的规范上送
            ///// </summary>
            //[DataMember]
            //private string detail;
            //public string getDetail()
            //{
            //    return detail;
            //}
            //public void setDetail(string value)
            //{
            //    detail = value;
            //}

            ///// <summary>
            /////客户姓名（仅实名认证输入）
            ///// </summary>
            //[DataMember]
            //private string cust_name;
            //public string getCustName()
            //{
            //    return cust_name;
            //}
            //public void setCustName(string value)
            //{
            //    cust_name = value;
            //}

            ///// <summary>
            /////证件类型（仅实名认证输入）
            ///// </summary>
            //[DataMember]
            //private string cust_cert_type;
            //public string getCustCertType()
            //{
            //    return cust_cert_type;
            //}
            //public void setCustCertType(string value)
            //{
            //    cust_cert_type = value;
            //}

            ///// <summary>
            /////证件号码（仅实名认证输入）
            ///// </summary>
            //[DataMember]
            //private string cust_cert_no;
            //public string getCustCertNo()
            //{
            //    return cust_cert_no;
            //}
            //public void setCustCertNo(string value)
            //{
            //    cust_cert_no = value;
            //}

            ///// <summary>
            /////订单优惠标记
            ///// </summary>
            //[DataMember]
            //private string goods_tag;
            //public string getGoodsTag()
            //{
            //    return goods_tag;
            //}
            //public void setGoodsTag(string value)
            //{
            //    goods_tag = value;
            //}
        }
    }
}
